package cn.edu.nuc.bre.service.interfaces;

import java.util.List;
import java.util.Set;

import org.activiti.engine.identity.Group;
import org.activiti.engine.identity.User;

import cn.edu.nuc.bre.dto.UserInfo;

/**
 * @author Mine
 * @since 2016年11月10日_上午10:50:48
 */
public interface UserService {
	/**
	 * 新增一个用户
	 * 
	 * @param one
	 * @return 增加结果
	 */
	public boolean add(User one);

	/**
	 * 修改用户所属用户组
	 * 
	 * @param uid
	 *            用户id
	 * @param oneGid
	 *            用户组id
	 * @param isNoticeOfficer
	 *            是否是公告员
	 * @return 修改结果
	 */
	public boolean editGroupShip(String uid, String oneGid, boolean isNoticeOfficer);

	/**
	 * 修改指定id用户信息
	 * @param 实体
	 * @return 修改结果
	 */
	public boolean edit(User one);
	/**
	 * 修改id用户密码
	 * @param 实体
	 * @return 修改结果
	 */
	public boolean editPWD(String uid,String oldPW,String newPW);

	/**
	 * 删除指定id用户
	 * 
	 * @param 用户id
	 * @return 删除结果
	 */
	public boolean delete(String uid);

	/**
	 * 查看指定id用户所属用户组
	 * 
	 * @param 用户id
	 * @return 公共实体
	 */
	public List<Group> findGroupsById(String uid);

	/**
	 * 查看指定id用户
	 * 
	 * @param 用户id
	 * @return 公共实体
	 */
	public User findById(String uid);

	/**
	 * 登录
	 * 
	 * @param 账号密码
	 * @return 带有角色信息的userInfo
	 */
	public UserInfo Login(String uid, String pw);

	/**
	 * 转换普通用户list为带权限信息用户list
	 * 
	 * @param 账号密码
	 * @return 带有角色信息的userInfo list
	 */
	public List<UserInfo> findUserInfosByUsers(List<User> users);

	/**
	 * 获取指定用户带权限信息
	 * 
	 * @return 带有角色信息的userInfo
	 */
	public UserInfo findUserInfoById(String uid);

	/**
	 * 批量添加用户，初始密码12345
	 * 
	 * @param users
	 * @return 操作结果
	 */
	public boolean addUserList(Set<User> users);

}
